這幾天工作量突然暴增,欠的工作債一次反撲、系統也挑這個時間點出狀況,真是久違的業力引爆...
不過還好,鐵人賽的節奏放慢,目前先一點一點看文件,在正式進入開發階段前,應該還撐得過去。
今天來看function,跟java的method應該是一樣的概念。
在Monkey C建立Function需要注意,宣告的function可以帶參數,
但是由於Monkey C是一種弱型別的動態語言,因此在宣告時是不會定義參數的型別的。
而為了避免呼叫function時帶入了非預期型別的引數,導致程式出現異常,
我們可以用兩個方法來判斷引數物件的型別,
一個是instanceof
,可用來檢查物件是否是繼承自某個class
using Toybox.System;
var value = 5;
if (value instanceof Lang.Number) {
System.println("value is a number");
}
一個是has
,可用來檢查物件內容是否包含指定的symbol
using Toybox.Sensor as Sensor;
var sensorInfo = Sensor.getInfo();
if (sensorInfo has :accel && sensorInfo.accel != null) {
var accel = sensorInfo.accel;
var xAccel = accel[0];
var yAccel = accel[1];
System.println("x: " + xAccel + ", y: " + yAccel);
}
Monkey C建立Function時,不一定要指定return什麼東西回去,沒寫return也沒關係。
如果沒有指定function要return什麼,Monkey C 仍會return一個沒作用的"垃圾值",
不過沒差,只要不去管它就好。
針對沒有定義要return什麼的function,
可以直接呼叫,像這樣:
function myFunction1(test) {
System.println(test);
}
myFunction1("測試1");
有回傳東西的function,可以建一個變數來儲存
function myFunction2(myValue) {
var result = myValue * 2;
return result;
}
var myResult = myFunction(2);